#include "file_loader.h"

/**
 * @brief 读取指定路径的文件内容
 * @param filePath 文件路径
 * @return 成功时返回文件内容，失败时返回错误信息
 */
QString FileLoader::readFile(const QString &filePath) {
    QFile file(filePath);
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return QString("无法打开文件: %1").arg(file.errorString());

    QTextStream in(&file);
    return in.readAll();
}

/**
 * @brief 删除指定路径的文件
 * @param filePath 要删除的文件路径
 * @return 成功时返回"success"，失败时返回错误信息
 */
QString FileLoader::deleteFile(const QString &filePath) {
    QFile file(filePath);
    if (file.remove()) {
        return QString("success");
    } else {
        return QString("无法删除文件: %1").arg(file.errorString());
    }
}

/**
 * @brief 删除指定目录下所有日志文件（.log和.txt后缀）
 * @param directoryPath 目录路径
 * @return 成功时返回"success"，失败时返回错误信息
 */
QString FileLoader::deleteAllLogs(const QString &directoryPath) {
    QDir dir(directoryPath);
    if (!dir.exists()) {
        return QString("目录不存在: %1").arg(directoryPath);
    }

    // 设置过滤器，只获取.log和.txt文件
    QStringList filters;
    filters << "*.log" << "*.txt";
    dir.setNameFilters(filters);

    // 获取所有匹配的文件
    QFileInfoList fileList = dir.entryInfoList(QDir::Files);

    int successCount = 0;
    int failCount = 0;

    // 删除所有匹配的文件
    for (const QFileInfo &fileInfo : fileList) {
        QFile file(fileInfo.absoluteFilePath());
        if (!file.remove()) {
            failCount++;
        } else {
            successCount++;
        }
    }

    return QString("成功删除 %1 个文件，失败 %2 个").arg(successCount).arg(failCount);
}